/*
 * Esta Clase es la responsable de insertar en la base de datos un nuevo colegio.
 * También permite consultar todos los colegios registrados
 */
package Modelo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 * @author David Asaaf Vergara Almanza
 */
public class AccesoDatosColegios {

    ArrayList<Colegio> listaColegios = new ArrayList<Colegio>();
    Connection conexion;
    ResultSet consulta;

    public void conectar() {
        try {
            Class.forName("org.postgresql.Driver");
            conexion = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/sistemaEvaluaciones", "postgres", "admin");
            System.out.println("Se conecto a la base de datos");
        } catch (Exception e) {
            System.out.println("No se pudo conectar a la base de datos " + e);
        }
    }

    public void desconectar() {
        try {
            consulta.close();
            conexion.close();
            System.out.println("Se desconecto correctamente de la base de datos");
        } catch (Exception e) {
            System.out.println("No se pudo desconectar de la base de datos " + e);
        }
    }

    public boolean registrarColegio(Colegio c) {
        boolean estado = true;
        try {
            conectar();
            String sql = "insert into tbl_colegios values('" + c.getNit() + "','" + c.getNombre() + "','" + c.getTelefono() + "')";
            conexion.createStatement().executeUpdate(sql);
            desconectar();
            estado = true;
        } catch (Exception e) {
            System.out.println("Error al intentar borrar una evaluacion");
            estado = false;
        }
        return estado;
    }

    public ArrayList<Colegio> getColegios() {
        try {
            conectar();
            String sql = "select * from tbl_colegios";
            consulta = conexion.createStatement().executeQuery(sql);
            while (consulta.next()) {
                Colegio colegio = new Colegio(consulta.getObject(consulta.getMetaData().getColumnLabel(1)).toString(), consulta.getObject(consulta.getMetaData().getColumnLabel(2)).toString(), consulta.getObject(consulta.getMetaData().getColumnLabel(3)).toString());
                listaColegios.add(colegio);
            }
            desconectar();
        } catch (Exception e) {
            System.out.println("Error al intentar consultar los colegios: " + e);
        }
        return listaColegios;
    }

    public Colegio consultarColegio(String nit) {
        Colegio colegio = new Colegio();
        try {
            conectar();
            String sql = "select * from tbl_colegios where nit='" + nit + "'";
            System.out.println(sql);
            consulta = conexion.createStatement().executeQuery(sql);
            while (consulta.next()) {
                colegio = new Colegio(consulta.getObject(consulta.getMetaData().getColumnLabel(1)).toString(), consulta.getObject(consulta.getMetaData().getColumnLabel(2)).toString(), consulta.getObject(consulta.getMetaData().getColumnLabel(3)).toString());
            }
            desconectar();
        } catch (Exception e) {
            System.out.println("Error al intentar consultar un colegio: " + e);
        }
        return colegio;
    }
}
